package com.ruoyi.system.dto;

import com.ruoyi.system.entity.ContractFile;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * 合同创建数据传输对象
 * 用于接收和传递合同创建时的相关参数
 */
@Data
public class ContractCreateDTO {

    /**
     * 项目ID
     * 关联的项目唯一标识
     */
    private Long projectId;

    /**
     * 合同类型
     * 枚举值：1-施工合同，2-整装合同，3-主材合同，4-软装合同
     */
    private String contractType;

    /**
     * 合同名称
     */
    private String contractName;

    /**
     * 纸质合同编号
     * 唯一标识，用于与实体合同对应
     */
    private String paperContractNo;

    /**
     * 签订人姓名
     */
    private String signer;

    /**
     * 签订日期
     * 格式：YYYY-MM-DD
     */
    private LocalDate signDate;

    /**
     * 合同总金额（未优惠前）
     * 精度：12位数字，2位小数
     */
    private BigDecimal totalAmount;

    /**
     * 优惠金额
     * 例如：1000.00表示优惠1000元，默认0.00
     * 精度：12位数字，2位小数
     */
    private BigDecimal discountAmount;

    /**
     * 折扣率
     * 小数形式，例如0.95表示95折，默认1.00（无折扣）
     * 精度：5位数字，2位小数
     */
    private BigDecimal discountRate;

    /**
     * 合同签订金额（最终实际金额）
     * 精度：12位数字，2位小数
     */
    private BigDecimal signedAmount;

    /**
     * 预期工期
     * 单位：天
     */
    private Integer expectedDuration;

    /**
     * 周末是否施工
     * 枚举值：1-是（不施工），2-否（施工）
     */
    private String noWeekendWork;

    /**
     * 节假日是否施工
     * 枚举值：1-是（不施工），2-否（施工）
     */
    private String noHolidayWork;

    /**
     * 预计开工日期
     * 格式：YYYY-MM-DD
     */
    private LocalDate expectedStartDate;

    /**
     * 预计完工日期
     * 格式：YYYY-MM-DD
     */
    private LocalDate expectedEndDate;

    /**
     * 特殊条款
     * 长文本，可包含补充协议等内容
     */
    private String specialTerms;

    /**
     * 合同备注
     * 用于记录其他需要说明的信息
     */
    private String remarks;

    /**
     * 合同相关文件列表
     */
    private List<ContractFile> contractFiles;
}